const int N = 100005;


int q[N];


int qs(int* q, int l, int r, int k) {
    if(l == r)  return q[l];
    int x = q[l], i = l-1, j = r+1;
    while(i < j) {
        while(q[ ++i ] < x);
        while(q[ --j ] > x);
        if(i < j) swap(q[i], q[j]);
    }
    int sl = j-l+1;

    if(k <= sl) return qs(q, l, j, k);
    else return qs(q, j+1, r, k-sl);
}

作者：qau
链接：https://www.acwing.com/activity/content/code/content/4181719/
来源：AcWing
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。